#include <RemoteAccessInterface.h>
// ---------------------------------------------------------------------------
OSErr EncodeARApassword ( UInt8 *userName, UInt8 *password, UInt8 *outbuf )
// ---------------------------------------------------------------------------
//
// DZÇÃÉãÅ[É`ÉìÇÕÉpÉXÉèÅ[ÉhÇÉäÉÇÅ[ÉgÉAÉNÉZÉXê⁄ë±Çà 'pass' ÉäÉ\Å[ÉXÇ…
// äiî[Ç∑ÇÈÇÃÇ…ìKǵÇΩÉtÉHÅ[É}ÉbÉgÇ…ÉGÉìÉRÅ[ÉhÇ∑ÇÈ
// DZÇÃÉãÅ[É`ÉìÇ≈ÇÕÅAà»ëOÇà ARA PassWordMunger API ÇÉCÉìÉNÉäÉÅÉìÉ^ÉãÇ…åƒÇ—èoǵǃÅA
// ÉpÉXÉèÅ[ÉhÇ 256 ÉoÉCÉgÇÃÉuÉçÉbÉNÇ…ïœä∑Ç∑ÇÈ
//
{
TRemoteAccessPasswordMunger pb;
UInt8 buffer[9];
UInt8 inBuffer[256];
OSErr err;
short i;
short offset = 1;
// ïœä∑ÉoÉbÉtÉ@ÇÉ[ÉçÉAÉEÉgÇ∑ÇÈ
for (i = 0; i < sizeof inBuffer ; i++) inBuffer[i] = 0;
// ÉpÉXÉèÅ[ÉhÇíÜÇ…ÉRÉsÅ[Ç∑ÇÈ
BlockMoveData(password, inBuffer, password[0] + 1);
// ÉpÉâÉÅÅ[É^ÉuÉçÉbÉNÇÉäÉÇÅ[ÉgÉAÉNÉZÉX API åƒÇ—èoǵDžëŒâûǵǃÉZÉbÉgÉAÉbÉvÇ∑ÇÈ
pb.csCode = RAM_EXTENDED_CALL;
pb.resultStrPtr = nil;
pb.extendedType = (char*) REMOTEACCESSNAME;
pb.extendedCode = CmdRemoteAccess_PassWordMunger;
pb.userNamePtr = userName;
pb.passWordPtr = buffer;
pb.reserved = 0;
// 1 ìxÇ… 8 ÉoÉCÉgÇ∏ǬèàóùÇ∑ÇÈ
for (i = 0; i < 32 ; i++)
{
BlockMoveData(inBuffer+offset, &buffer[1], 8);
buffer[0]=8;
pb.passWordPtr = buffer;
err = PBRemoteAccess((TPRemoteAccessParamBlock) &pb, false);
if (err == noErr)
err = pb.ioResult;
if(err != noErr) break;
BlockMoveData(&buffer[1], outbuf + offset, 8);
offset+=8;
}
outbuf[0]=0; // êÊì™ÉoÉCÉgÇÕèÌÇ…É[Éç
return err;
}
égópó· 1Å@ÉÜÅ[ÉUñºÇÉLÅ[ÇΔǵǃégópÇ∑ÇÈÉpÉXÉèÅ[ÉhÇÃà√çÜâª
|